arm: provide arch_fetch_and_add()
authorDavid Vrabel <david.vrabel@citrix.com>
Fri, 8 May 2015 08:59:44 +0000 (10:59 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 8 May 2015 08:59:44 +0000 (10:59 +0200)
commitf9cc3cd9b4de58cf032c8624406384c172937e57
treeb249ac1e05f512983db39a99661b299e7af5b8ef
parent2bfc9fc52ce8485fa43e79bbdc32360c74e12fe8
arm: provide arch_fetch_and_add()

arch_fetch_and_add() atomically adds a value and returns the previous
value.

This generic arm implementation uses the GCC __sync_fetch_and_add()
builtin.  This builtin resulted in suitable inlined asm for GCC 4.8.3
(arm64) and GCC 4.6.3 (arm32).

This is needed to implement ticket locks.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/include/asm-arm/system.h